package com.example.gobang_system.common.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * 进行加密、验证
 */
public class SecurityUtil {
    // 密钥
    private static final String AES_KEY = "3416b730f0f244128200c59fd07e6249";
    /**
     * 使用 md5 对密码进行加密
     * @param password 输入的密码
     * @return 密码 + 盐值
     */
    public static String encipherPassword(String password) {
        String salt = UUID.randomUUID().toString().replace("-", "");
        String secretPassword = DigestUtils.md5DigestAsHex((password + salt).getBytes());
        return secretPassword + salt;
    }

    /**
     * 验证用户输入的密码是否正确
     * @param inputPassword 用户输入密码
     * @param sqlPassword 数据库中存储密码
     * @return
     */
    public static Boolean verifyPassword(String inputPassword, String sqlPassword) {
        if (!StringUtils.hasLength(inputPassword)) {
            return false;
        }
        if (!StringUtils.hasLength(sqlPassword) || sqlPassword.length() != 64) {
            return false;
        }
        String salt = sqlPassword.substring(32, 64);
        String secretPassword = DigestUtils.md5DigestAsHex((inputPassword + salt).getBytes());
        return sqlPassword.substring(0, 32).equals(secretPassword);
    }
}
